//package com.police.activity;
//
//import android.app.Activity;
//import android.app.AlertDialog.Builder;
//import android.app.ProgressDialog;
//import android.content.Context;
//import android.content.DialogInterface;
//import android.content.DialogInterface.OnCancelListener;
//import android.content.Intent;
//import android.os.AsyncTask;
//import android.os.AsyncTask.Status;
//import android.os.Bundle;
//import android.os.Handler;
//import android.os.Message;
//import android.text.Editable;
//import android.text.TextWatcher;
//import android.view.View;
//import android.view.inputmethod.InputMethodManager;
//import android.widget.*;
//import android.widget.AdapterView.OnItemClickListener;
//import com.astrob.mapapi.core.GeoPoint;
//import com.astrob.mapapi.core.PoiItem;
//import com.astrob.mapapi.route.Route;
//import com.astrob.mapapi.route.RouteRequest;
//import com.astrob.mapapi.route.RouteResponse;
//import com.astrob.mapapi.route.Step;
//import com.astrob.mapapi.search.MapSearch;
//import com.astrob.mapapi.search.SearchSet;
//import com.police.PoliceApp;
//import com.police.R;
//
//import java.util.ArrayList;
//import java.util.List;
//
//public class RouteActivity extends Activity {
//	private EditText orgInput;
//	private EditText destInput;
//	private Button btnOrigin;
//	private Button btnDest;
//	private Button btnQuickest;
//	private Button btnShortest;
//	private CheckBox cboxNoHighway;
//	private ListView listView;
//	private ProgressDialog pBar = null;
//	private SearchTask searchTask;
//	
//	private PoiItem routeOrg;
//	private PoiItem routeDest;
//	
//	private boolean bOrginNeedQuery = false;
//	private boolean bDestNeedQuery = false;
//	
//	private MapSearch search;
//	
//	private List<PoiItem> mPoiList;
//	private boolean bQueryOrgin;
//	private boolean bQueryDest;
//	
//	private boolean bHighway;
//	private boolean bQuickest;
//	private Route mRoute;
//	private RouteAdapter routeAdapter;
//	private GeoPoint mMapCenter;
//	
//	private boolean selectOrg;
//	
//	@Override
//	protected void onCreate(Bundle savedInstanceState) {
//		// TODO Auto-generated method stub
//		super.onCreate(savedInstanceState);
//		setContentView(R.layout.route_activity);
//
//		mMapCenter = getIntent().getParcelableExtra("center");
//		initUI();
//
//		addListener();
//	}
//
//	private void initUI() {
//		orgInput = (EditText) findViewById(R.id.edit_route_origin);
//		destInput = (EditText) findViewById(R.id.edit_route_dest);
//
//		btnOrigin = (Button) findViewById(R.id.btn_route_origin);
//		btnDest = (Button) findViewById(R.id.btn_route_dest);
//
//		btnQuickest = (Button) findViewById(R.id.btn_quickest);
//		btnShortest = (Button) findViewById(R.id.btn_shortest);
//
//		cboxNoHighway = (CheckBox) findViewById(R.id.nohighway_check);
//
//		listView = (ListView) findViewById(R.id.list_view);
//		
//		search = MapSearch.getInstance();
//	}
//
//	
//	@Override
//	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//		// TODO Auto-generated method stub
//		super.onActivityResult(requestCode, resultCode, data);
//		
//		if (requestCode == 2001 && resultCode == 2002) {
//			if (data.hasExtra("SelectedGeoPoint")) {
//				GeoPoint p = data.getParcelableExtra("SelectedGeoPoint");
////				GeocodeResponse geo = MapSearch.getInstance().reverseGeocode(p);
////				String snippet = "";
////				if (geo != null && geo.hasAddress()) {
////					String address = geo.getAddresses().get(0).getAddress();
////					if (StringUtil.isEmpty(address)){
////						if (geo.getAddresses().get(0).getComponents() != null){
////							address = geo.getAddresses().get(0).getComponents().toString();
////						}
////					}
////					snippet = StringUtil.trim(address)  + getString(R.string.nearby);
////				}
//				if (selectOrg) {
//					routeOrg = new PoiItem(p, "地图上的点", "地图上的点");
//					orgInput.setText(routeOrg.getTitle());
//					bOrginNeedQuery = false;
//				}
//				else {
//					routeDest = new PoiItem(p, "地图上的点", "地图上的点");
//					destInput.setText(routeDest.getTitle());
//					bDestNeedQuery = false;
//				}
//			}
//		}
//	}
//
//	private void addListener() {
//		orgInput.addTextChangedListener(new TextWatcher() {
//
//			@Override
//			public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
//			}
//
//			@Override
//			public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
//					int arg3) {
//			}
//
//			@Override
//			public void afterTextChanged(Editable arg0) {
//				// if edit. set this flag true.
//				bOrginNeedQuery = true;
//				
//			}
//		});
//		
//		destInput.addTextChangedListener(new TextWatcher() {
//
//			@Override
//			public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
//			}
//
//			@Override
//			public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
//					int arg3) {
//			}
//
//			@Override
//			public void afterTextChanged(Editable arg0) {
//				bDestNeedQuery = true;
//			}
//		});
//		
//		btnQuickest.setOnClickListener(new View.OnClickListener() {
//
//			@Override
//			public void onClick(View v) {
//				// TODO Auto-generated method stub
//
//				bQuickest = true; 
//				startRoute();
//			}
//		});
//
//		btnShortest.setOnClickListener(new View.OnClickListener() {
//
//			@Override
//			public void onClick(View v) {
//				// TODO Auto-generated method stub
//				bQuickest = false; 
//				startRoute();
//			}
//		});
//		
//		listView.setOnItemClickListener(new OnItemClickListener() {
//			@Override
//			public void onItemClick(AdapterView<?> parent, View view,
//					int position, long id) {
//				gotoMapView(position);
//			}
//		});
//		
//		btnOrigin.setOnClickListener(new View.OnClickListener() {
//			
//			@Override
//			public void onClick(View v) {
//				// TODO Auto-generated method stub
//				selectOrg = true;
//				showSelectDlg();
//			}
//		});
//		
//		btnDest.setOnClickListener(new View.OnClickListener() {
//			
//			@Override
//			public void onClick(View v) {
//				// TODO Auto-generated method stub
//				selectOrg = false;
//				showSelectDlg();
//			}
//		});
//	}
//
//	private void startRoute(){
//		//routeOrg = new PoiItem(new GeoPoint(117.25548400, 31.854603), "家乐福", "长江西路");
//		//routeDest = new PoiItem(new GeoPoint(117.2726430, 31.763645), "滨湖时光", "观海路");
//		bHighway = !cboxNoHighway.isChecked();
//		if (routeOrg == null || bOrginNeedQuery){
//			queryOrigin();
//		}else if (routeDest == null || bDestNeedQuery){
//			queryDest();
//		}else {
//			queryRoute();
//		}
//	}
//	
//	private void queryRoute(){
//		RouteTask routeTask = new RouteTask();
//		routeTask.execute();
//	}
//	
//	private void doRoute(){
//		RouteRequest.TravelPolicy policy = null;
//		if (bQuickest){
//			policy = RouteRequest.TravelPolicy.quickest;
//		}
//		
//		RouteResponse routeResp = search.findPath(routeOrg.getPoint(), routeDest.getPoint(), policy, bHighway);
//		if (routeResp.getRoutes() != null && !routeResp.getRoutes().isEmpty()){
//			mRoute = routeResp.getRoutes().get(0);
//		}
//	}
//
//	private void queryOrigin(){
//		String keyword = orgInput.getText().toString();
//		SearchSet orgSearchSet = new SearchSet();
//		orgSearchSet.setKeyword(keyword);
//		if (mMapCenter != null){
//			orgSearchSet.setCenter(mMapCenter);
//		}
//		
//		SearchTask searchTask = new SearchTask();
//		searchTask.execute(orgSearchSet);
//		
//		bQueryOrgin = true;
//		bOrginNeedQuery = false;
//	}
//	
//	private void queryDest(){
//		String keyword = destInput.getText().toString();
//		SearchSet orgSearchSet = new SearchSet();
//		orgSearchSet.setKeyword(keyword);
//		if (mMapCenter != null){
//			orgSearchSet.setCenter(mMapCenter);
//		}
//		
//		SearchTask searchTask = new SearchTask();
//		searchTask.execute(orgSearchSet);
//		bQueryDest = true;
//		bDestNeedQuery = false;
//	}
//	
//	private void updateRouteList(){
//		if (mRoute == null){
//			return;
//		}
//		
//		if (routeAdapter == null){
//			routeAdapter = new RouteAdapter(this, mRoute);
//			listView.setAdapter(routeAdapter);
//		}else{
//			routeAdapter.setRoute(mRoute);
//			routeAdapter.notifyDataSetChanged();
//			listView.invalidate();
//		}
//		
//	}
//	
//	@Override
//	protected void onDestroy() {
//		// TODO Auto-generated method stub
//		super.onDestroy();
//	}
//
//	class SearchTask extends AsyncTask<SearchSet, Void, List<PoiItem>> {
//
//		@Override
//		protected List<PoiItem> doInBackground(SearchSet... params) {
//			// TODO Auto-generated method stub
//			// SearchSet searchSet = new SearchSet();
//			// searchSet.setKeyword(params[0]);
//			// // searchSet.setAdaId(34000000);
//			// searchSet.setCenter(new GeoPoint(117.2379205, 31.8526316));
//			// searchSet.setRadius(100000);
//
//			SearchSet searchSet = params[0];
//			MapSearch searchHandler = MapSearch.getInstance();
//			List<PoiItem> list = searchHandler.searchPOI(searchSet);
//			return list;
//		}
//
//		@Override
//		protected void onPreExecute() {
//			// TODO Auto-generated method stub
//			super.onPreExecute();
//			closeInputMethod();
//			showProgressBar("正在查询");
//		}
//
//		@Override
//		protected void onPostExecute(List<PoiItem> result) {
//			// TODO Auto-generated method stub
//			super.onPostExecute(result);
//
//			dismissProgressBar();
//			
//			if (result == null || result.isEmpty()){
//				Toast.makeText(RouteActivity.this, "未查询到起点或终点", Toast.LENGTH_LONG).show();
//				return;
//			}
//
//			if (mPoiList == null){
//				mPoiList = new ArrayList<PoiItem>();
//			}
//			mPoiList.clear();
//			mPoiList.addAll(result);
//			PoiAdapter poiAdapter = new PoiAdapter(RouteActivity.this, result);
//			Builder alertDialogBuilder = new Builder(RouteActivity.this);
//			alertDialogBuilder.setAdapter(poiAdapter, new DialogInterface.OnClickListener() {
//
//				@Override
//				public void onClick(DialogInterface dialog, int which) {
//					// TODO Auto-generated method stub
//					PoiItem item = mPoiList.get(which);
//					if (bQueryOrgin){
//						routeOrg = item;
//						orgInput.setText(routeOrg.getTitle());
//						bOrginNeedQuery = false;
//						bQueryOrgin = false;
//						mHandler.sendEmptyMessage(FINISHED_QUERY_ORGIN);
//					}else if (bQueryDest){
//						routeDest = item;
//						destInput.setText(routeDest.getTitle());
//						bDestNeedQuery = false;
//						bQueryDest = false;
//						mHandler.sendEmptyMessage(FINISHED_QUERY_DEST);
//					}
//				}
//			});
//			alertDialogBuilder.create().show();
//		}
//
//	}
//
//	class RouteTask extends AsyncTask<Void,Void, Void>{
//
//		@Override
//		protected Void doInBackground(Void... params) {
//			// TODO Auto-generated method stub
//			doRoute();
//			return null;
//		}
//
//		@Override
//		protected void onPreExecute() {
//			// TODO Auto-generated method stub
//			super.onPreExecute();
//			showProgressBar("路径演算中");
//		}
//
//		@Override
//		protected void onPostExecute(Void result) {
//			// TODO Auto-generated method stub
//			super.onPostExecute(result);
//			dismissProgressBar();
//			mHandler.sendEmptyMessage(FINISHED_QUERY_ROUTE);
//		}
//
//
//	}
//
//	private final int FINISHED_QUERY_ORGIN = 10001;
//	private final int FINISHED_QUERY_DEST = 10002;
//	private final int FINISHED_QUERY_ROUTE = 10003;
//
//	private Handler mHandler = new Handler(){
//
//		@Override
//		public void handleMessage(Message msg) {
//			// TODO Auto-generated method stub
//			switch (msg.what) {
//			case FINISHED_QUERY_ORGIN:
//				queryDest();
//				break;
//			case FINISHED_QUERY_DEST:
//				queryRoute();
//				break;
//
//			case FINISHED_QUERY_ROUTE:
//				updateRouteList();
//				break;
//			default:
//				break;
//			}
//			super.handleMessage(msg);
//		}
//
//	};
//
//	private void closeInputMethod() {
//		InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//		if (imm.isActive()) {
//			imm.hideSoftInputFromWindow(
//					this.getCurrentFocus().getWindowToken(),
//					InputMethodManager.HIDE_NOT_ALWAYS);
//		}
//	}
//
//	private void showProgressBar(String msg) {
//		if (null == pBar)
//			pBar = new ProgressDialog(this);
//		pBar.setMessage(msg);
//		pBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
//		pBar.setCancelable(true);
//		pBar.setOnCancelListener(new OnCancelListener() {
//			@Override
//			public void onCancel(DialogInterface dialog) {
//				// TODO Auto-generated method stub
//				if (searchTask != null
//						&& searchTask.getStatus() == Status.RUNNING) {
//					if (searchTask.cancel(true)) {
//						searchTask = null;
//					} else {
//						if (pBar != null) {
//							pBar.show();
//						}
//					}
//				}
//			}
//		});
//		pBar.show();
//	}
//
//	private void dismissProgressBar() {
//		if (null != pBar && pBar.isShowing()) {
//			pBar.dismiss();
//			pBar = null;
//		}
//	}
//
//	private void gotoMapView(int nIndex) {
//		PoliceApp app = (PoliceApp) getApplication();
//		app.setRoute(mRoute);
//		Intent intent = new Intent(this, ShowOnMapActivity.class);
//		Step data = mRoute.getLegs().get(0).getSteps().get(nIndex);
//		GeoPoint point = data.getStartPoint();
//		intent.putExtra("center", point);
//		startActivity(intent);
//	}
//
//	private void showSelectDlg() {
//
//		Builder dlg = new Builder(this);
//
//		if (selectOrg) {
//			dlg.setTitle(R.string.select_org);
//		}
//		else {
//			dlg.setTitle(R.string.select_dest);
//		}
//
//		CharSequence[] items = getResources().getTextArray(R.array.select_dest_org);
//
//		dlg.setItems(items, new DialogInterface.OnClickListener() {
//
//			@Override
//			public void onClick(DialogInterface dialog, int which) {
//
//				switch (which) {
//				case 0:
//					//我的位置
//					GeoPoint p = mMapCenter;
//				
//					if (p != null && p.isValid()) {					
//						String snippet = "";
////						GeocodeResponse geo = MapSearch.getInstance().reverseGeocode(p);
////						if (geo != null && geo.hasAddress()) {
////							String address = geo.getAddresses().get(0).getAddress();
////							if (StringUtil.isEmpty(address)){
////								if (geo.getAddresses().get(0).getComponents() != null){
////									address = geo.getAddresses().get(0).getComponents().toString();
////								}
////							}
////							snippet = StringUtil.trim(address)  + getString(R.string.nearby);
////						}
//						if (selectOrg) {
//							routeOrg = new PoiItem(p, getString(R.string.select_now_location), snippet);
//							orgInput.setText(routeOrg.getTitle());
//							bOrginNeedQuery = false; 
//						}
//						else {
//							routeDest = new PoiItem(p, getString(R.string.select_now_location), snippet);
//							destInput.setText(routeDest.getTitle());
//							bDestNeedQuery = false;
//						}
//					}
//					break;
//
//				case 1:
//					//地图上的点
//					PoliceApp app = (PoliceApp) getApplication();
//					app.setShowType(PoliceApp.PICK_POI);
//					Intent intent = new Intent(RouteActivity.this, ShowOnMapActivity.class);
//					startActivityForResult(intent, 2001);
//					break;
//
////				case 2:
////					//历史记录
////					Intent history = new Intent(RouteActivity.this, SearchHistoryActivity.class);
////					history.putExtra(SearchActivity.EXTRA_CLICK_TYPE, 1);
////					startActivityForResult(history, 1000);
////					break;
//
//				case 2:
//					//查询
//					//Intent search = new Intent(RouteActivity.this, SearchActivity.class);
//					//search.putExtra(SearchActivity.EXTRA_CLICK_TYPE, 1);
//					//startActivityForResult(search, 1000);
//					break;
//				}
//			}
//		});
//		
//		dlg.show();
//	}
//}